#include"logger.h"
#include"public.h"
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
//通过环境变量来设置日志级别
Logger::Logger()
{
    if(!getenv("LOG_LEVEL"))//环境变量
    {
        m_level=INFO;
    }
    else
    {
        //断言getenv的返回值一定是四个级别中的一种
        m_level=LogLevelType[getenv("LOG_LEVEL")];
    }
    m_LogToLogFile=true;
    m_LoToTerminal=true;
}
void Logger::SetLogToTerminal(bool logToTerminal)
{
    m_LoToTerminal=logToTerminal;
}
bool Logger::GetLogTominal()const
{
    return m_LoToTerminal;
}
void Logger::SetLogToLogFile(bool logToLogFile)
{
    m_LogToLogFile=logToLogFile;
}
bool Logger::GetLogToLogFile()const
{
    return m_LogToLogFile;
}

void Logger::SetLogLevel(LOG_LEVEL level)
{
    m_level=level;
}
LOG_LEVEL Logger::GetLogLevel()const
{
    return m_level;
}

void Logger::SetLogFile(const std::string& logFileName)
{
    if(m_logFile.is_open())
    {
        m_logFile.close();
    }
    m_logFile.open(logFileName);
    m_LogToLogFile=true;
}

// int main()
// {
//     // LOG_INFO<<"hello world1";
//     // LOG_ERROR<<"hello world2";
//     // LOG_DEBUG<<"hello world3";
//     // LOG_FATAL<<"hello world4";
//     int res=open("./z.txt",O_RDONLY,0664);//在系统调用发生错误时，我们希望将这个错误信息打印到自己实现的日志里边，这里的strerror就系统为我们提供的一个接口
//     if(-1==res)
//     {
//         //strerrno 是怎样实现的？
//         LOG_ERROR<<strerror(errno);
//     }
// }